/*
题目描述：
如果三个正整数A、B、C ,A²+B²=C²则为勾股数
如果ABC之间两两互质，即A与B，A与C，B与C均互质没有公约数，
则称其为勾股数元组。
请求出给定n~m范围内所有的勾股数元组

输入描述
起始范围
1 < n < 10000
n < m < 10000

输出描述
ABC保证A<B<C
输出格式A B C
多组勾股数元组，按照A B C升序的排序方式输出。
若给定范围内，找不到勾股数元组时，输出Na。
示例一
输入

1
20
COPY
输出

3 4 5
5 12 13
8 15 17
COPY
示例二
输入

5
10
COPY
输出

Na
*/
#include <vector>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <time.h>

using namespace std;

int gcd(int m,int n) {
 return (n == 0) ? m : gcd(n, m%n);
}
bool bTest(int t1,int t2) {
 vector<int> tt;
 for (int i = t1; i <= t2;i++) {
   for (int j = t1+ 1; j <= t2;j++) {
    int test = i*i + j*j;
    int test1 = sqrt(test);
    if (test1* test1 == (i*i + j*j)) {
     if ((gcd(j, i) == 1) && (gcd(test1,j) == 1) && (gcd(test1, i) == 1) && i < j && j < test1) {
       cout <<i << " " << j << " " << test1 << endl;
       tt.push_back(i);
     }
    }
   }
 }
 if (tt.size() < 1) {
  cout << "ttt" << endl;
  return false;
 }
 return true;
}

int main() {

 int t1;
 int t2;
 cin >> t1;
 cin >> t2;
 clock_t start_time,end_time;
 start_time = clock();
 if (bTest(t1,t2) == false) {
  cout << "Na" << endl;
 }
 end_time = clock();
 cout << "The Time Runs:" << (double)(end_time - start_time)/CLOCKS_PER_SEC << "s" << endl;
 return 0;
}
